package test04.sync.test02.c;

/**
 * 多个线程共享的资源
 *
 * @Author zqx
 * @Date 2024-03-21
 */
public class PiaoRunnable01 implements Runnable{
    /**
     * 电影票 - 公共资源
     */
    private int piao = 50 ;

    /**
     * 定义锁对象 - 必须保证唯一性
     */
    // private String lock = "lock" ;
    private final static Object lock = new Object() ;


    // t1 t2 t3
    @Override
    public void run() {
        while(piao >= 1) {
            // 同步代码块 - 锁对象必须唯一
            synchronized(lock) {
                if(piao > 0) {
                    System.out.println(Thread.currentThread().getName() + "出售了第 " + piao + " 张票");
                    piao -- ;
                }
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}
